import {defineStore} from "pinia"
import {useStateMixin} from 'st-store-pinia'
import {genGetDataByReqHandler} from 'st-common-req'
import {getMenus, useMenuStore, MenuType} from "@menu"

/**
 * 系统菜单管理中菜单相关信息状态管理仓库
 */
export const useSysMenuStore = defineStore('sysMenuStore', () => {
  // 表格是否为加载状态
  const {getData: getTableLoading, setData: setTableLoading} = useStateMixin<boolean>(false)

  // 表格数据
  const {getData: getTableData, setData: setTableData} = useStateMixin<MenuType[]>([])

  // 通过请求获取表格数据
  const getTableDataByReq = genGetDataByReqHandler<MenuType[]>({
    getDataApi: getMenus,
    setData: async (data) => {
      // 保存菜单数据
      setTableData(data)
      // 更新左侧菜单
      await useMenuStore().getMenuDataByReq()
    },
    setLoading: setTableLoading,
  })

  return {
    getTableLoading,
    getTableData,
    getTableDataByReq,
  }
})
